package managedBean;

import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.context.FacesContext;

import negocio.Fachada;
import negocio.IFachada;
import basica.Categoria;
import basica.Produto;
import basica.Usuario;

@ManagedBean
public class ProdutoBean{

	@ManagedProperty("#{usuarioBean}")
	private UsuarioBean usuarioBean;

	private Produto produto = new Produto();
	private Categoria categoria = new Categoria();
	private List<Categoria> listCategoria;
	private List<Produto> listProduto;
	private List<Produto> selecaoProduto;
	private double valor;
	
	
	private IFachada fachada = Fachada.getInstancia();
	
	public void init() {
		System.out.println("\ninit");
		this.produto = null;
		this.categoria = null;
		this.listCategoria = null;
		this.selecaoProduto = null;
		this.valor = 0;
	}
	
	public String novoProduto() {
		usuarioBean.init();
		System.out.println("\nnovoProduto");
		init();
		//this.produto = new Produto();
		return "/publico/produto.xhtml";
	}
	
	public String selecionaProduto() {
		System.out.println("\nselecionaProduto");
		return "/publico/selecionaProduto.xhtml";
	}
	
	public String salvar() {
		try {
			usuarioBean.init();
			System.out.println("\nsalvar");
			System.out.println("\n"+produto);
			
			Usuario usuarioLogado = usuarioBean.getUsuario();
			
			fachada.inserirProdutoListaUsuario(usuarioLogado, selecaoProduto);
			/*
			for (Produto produto : selecaoProduto) {
				System.out.println("\n"+produto);
			}
			*/
			
			
			this.produto.setCategoria(this.categoria);
			fachada.inserirProduto(produto);
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Produto cadastrado com sucesso!"));
			this.novoProduto();
			return "/publico/produto.xhtml";
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	
	
	//getters and setters
	public Produto getProduto() {
		return produto;
	}
	public void setProduto(Produto produto) {
		this.produto = produto;
	}

	public Categoria getCategoria() {
		return categoria;
	}
	public void setCategoria(Categoria categoria) {
		this.categoria = categoria;
	}

	public double getValor() {
		return valor;
	}
	public void setValor(double valor) {
		this.valor = valor;
	}

	public List<Categoria> getListCategoria() {
		System.out.println("\ngetListCategoria");
		listCategoria = fachada.consultarTodosCategorias(); 
		return listCategoria;
	}
	public void setListCategoria(List<Categoria> listCategoria) {
		this.listCategoria = listCategoria;
	}

	public List<Produto> getListProduto() {
		System.out.println("\ngetListProduto");
		listProduto = fachada.consultarTodosProdutos();
		return listProduto;
	}
	public void setListProduto(List<Produto> listProduto) {
		this.listProduto = listProduto;
	}
	
	public List<Produto> getSelecaoProduto() {
		System.out.println("\ngetSelecaoProduto");
		return selecaoProduto;
	}
	public void setSelecaoProduto(List<Produto> selecaoProduto) {
		System.out.println("\nsetSelecaoProduto");
		this.selecaoProduto = selecaoProduto;
	}

	public UsuarioBean getUsuarioBean() {
		return usuarioBean;
	}
	public void setUsuarioBean(UsuarioBean usuarioBean) {
		this.usuarioBean = usuarioBean;
	}
	
}
